package week07

// 541. 反转字符串 II
// https://leetcode-cn.com/problems/reverse-string-ii/

func reverseStr(s string, k int) string {
	buf := []byte(s)
	i := 0
	for {
		if len(buf) < i {
			break
		}
		if len(buf) < i+k {
			reverse(buf[i:len(buf)])
		} else {
			reverse(buf[i:i+k])
		}
		i += 2 * k
	}
	return string(buf)
}

func reverse(buf []byte) {
	for i := 0; i < len(buf)/2; i++ {
		buf[i], buf[len(buf)-i-1] = buf[len(buf)-i-1], buf[i]
	}
}